﻿using System.Collections.ObjectModel;
using System.Xml.Serialization;
using Renci.Data.Interop.OpenGIS.Ogc;
using Renci.Data.Interop.OpenGIS.Ows;

namespace Renci.Data.Interop.OpenGIS.Wfs
{
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.3038")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.opengis.net/wfs")]
    [System.Xml.Serialization.XmlRootAttribute("WFS_Capabilities", Namespace = "http://www.opengis.net/wfs", IsNullable = false)]
    public class WfsCapabilitiesType : CapabilitiesBaseType
    {
        /// <summary>
        /// Creates a default instance of <see cref="WfsCapabilitiesType"/>.
        /// </summary>
        public WfsCapabilitiesType()
        {
            this.Xmlns = new XmlSerializerNamespaces();
            this.Xmlns.Add("ows", "http://www.opengis.net/ows");
            this.Xmlns.Add("ogc", "http://www.opengis.net/ogc");
            this.Xmlns.Add("wfs", "http://www.opengis.net/wfs");
            this.Xmlns.Add("gml", "http://www.opengis.net/gml");
            this.Xmlns.Add("xlink", "http://www.w3.org/1999/xlink");
            this.Xmlns.Add("xsi", "http://www.w3.org/2001/XMLSchema-instance");
        }

        /// <summary>
        /// Gets or sets prefix association with namespaces that are used object serializer.
        /// </summary>
        [XmlNamespaceDeclarations]
        public XmlSerializerNamespaces Xmlns { get; set; }

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("FeatureTypeList")]
        public FeatureTypeListType FeatureTypeList { get; set; }

        private Collection<GMLObjectTypeType> _servesGMLObjectTypeList = new Collection<GMLObjectTypeType>();
        /// <summary>
        /// Gets list of GML Object types available for GetGmlObject requests
        /// </summary>
        [System.Xml.Serialization.XmlArrayItemAttribute("GMLObjectType", IsNullable = false)]
        [System.Xml.Serialization.XmlArrayAttribute("ServesGMLObjectTypeList", IsNullable = false)]
        public Collection<GMLObjectTypeType> ServesGMLObjectTypeList
        {
            get
            {
                return this._servesGMLObjectTypeList;
            }
        }

        private Collection<GMLObjectTypeType> _supportsGMLObjectTypeList = new Collection<GMLObjectTypeType>();
        /// <summary>
        /// Gets list of GML Object types that WFS is capable of serving, either directly, or as validly derived types defined in a GML application schema.
        /// </summary>
        [System.Xml.Serialization.XmlArrayItemAttribute("GMLObjectType", IsNullable = false)]
        [System.Xml.Serialization.XmlArrayAttribute("SupportsGMLObjectTypeList", IsNullable = false)]
        public Collection<GMLObjectTypeType> SupportsGMLObjectTypeList { get
        {
            return this._supportsGMLObjectTypeList;
        }}

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("Filter_Capabilities", Namespace = "http://www.opengis.net/ogc")]
        public FilterCapabilities Filter_Capabilities { get; set; }
    }
}
